Skip to content

feat: Add AWS Route53 DNS record management components#3085

Merged
lucaspin merged 7 commits intosuperplanehq:mainfrom
yinebebt:route53-integration
Feb 17, 2026
Merged

feat: Add AWS Route53 DNS record management components#3085
lucaspin merged 7 commits intosuperplanehq:mainfrom
yinebebt:route53-integration

Conversation

@yinebebt
Copy link
Contributor

Summary

Implements the AWS Route53 integration (closes #3059), adding three
new components for managing DNS records in Route53 hosted zones.

New Components

  • Create DNS Record (aws.route53.createRecord) - creates a new DNS record in a
    hosted zone (fails if record already exists)
  • Upsert DNS Record (aws.route53.upsertRecord) - creates or updates a DNS record
    (idempotent, safe for repeated runs)
  • Delete DNS Record (aws.route53.deleteRecord) - deletes an existing DNS record
    from a hosted zone

What's included

  • Backend (pkg/integrations/aws/route53/): Route53 XML API client with SigV4
    signing, hosted zone resource listing for the UI picker, component implementations
    with configuration validation, example outputs, and inline documentation
  • Frontend (web_src/): Component mappers (node rendering, execution details,
    state registries), Route53 SVG icon, integration icon mapping
  • Tests: Unit tests for all three components covering Setup validation and Execute
    scenarios (success, API errors, missing credentials, invalid config)
  • Docs: Auto-generated component documentation in docs/components/AWS.mdx

Technical notes

  • Route53 uses an XML-based API (unlike most AWS JSON APIs), so a custom HTTP client
    handles XML marshaling/unmarshaling and a local parseError for Route53-specific
    XML error responses
  • Route53 is a global service - the client uses us-east-1 for signing and the global
    route53.amazonaws.com endpoint
  • Hosted zone IDs returned by AWS include a /hostedzone/ prefix which is normalized
    before use in API calls
  • Reuses existing common.CredentialsFromInstallation for AWS OIDC credential exchange

Test plan

  • Tested manually with automation - configured AWS OIDC integration, created a
    hosted zone, and executed Upsert DNS Record to create an A record via a workflow
    trigger. Verified record appeared in the AWS Route53 console.
  • Unit tests pass (go test ./pkg/integrations/aws/route53/...)

Demo video: https://vimeo.com/1164625934?share=copy&fl=sv&fe=ci

@yinebebt yinebebt changed the title Add AWS Route53 DNS record management components feat: Add AWS Route53 DNS record management components Feb 13, 2026
@AleksandarCole AleksandarCole added the pr:stage-3/3 Ready for full, in-depth, review label Feb 13, 2026
@lucaspin
Copy link
Contributor

@yinebebt I think it would be better if the components waited until the change is not in PENDING state anymore, and have reached the INSYNC state, before finishing the execution. It seems like that takes up to 60s, so it would be probably OK to poll on that. You can check how the aws.ecr.scanImage handles that

@yinebebt yinebebt force-pushed the route53-integration branch from 3b524c0 to 78c8d6c Compare February 13, 2026 17:50
Adds Create, Upsert, and Delete DNS record components for the AWS
Route53 integration, enabling users to manage DNS records within
existing hosted zones as part of SuperPlane workflows.

Signed-off-by: yinebebt <yintar5@gmail.com>
- Poll until change status is INSYNC
- Parse InvalidChangeBatch XML error format in parseError
- Consolidate create/upsert/delete mappers to one shared record.ts

Signed-off-by: yinebebt <yintar5@gmail.com>
@yinebebt yinebebt force-pushed the route53-integration branch from 78c8d6c to e9651e7 Compare February 16, 2026 12:43
@lucaspin
Copy link
Contributor

@yinebebt everything looks good. I'll make a few small polishing changes, and will merge shortly.

Signed-off-by: Lucas Pinheiro <lucas@superplane.com>
Signed-off-by: Lucas Pinheiro <lucas@superplane.com>
Signed-off-by: Lucas Pinheiro <lucas@superplane.com>
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Signed-off-by: Lucas Pinheiro <lucas@superplane.com>
@lucaspin lucaspin merged commit 566daa9 into superplanehq:main Feb 17, 2026
4 checks passed
ishaksebsib pushed a commit to ishaksebsib/superplane that referenced this pull request Feb 17, 2026
…3085)

Implements the AWS Route53 integration (closes superplanehq#3059), adding three
new components for managing DNS records in Route53 hosted zones.

### New Components

- **Create DNS Record** (`aws.route53.createRecord`) - creates a new DNS
record in a
  hosted zone (fails if record already exists)
- **Upsert DNS Record** (`aws.route53.upsertRecord`) - creates or
updates a DNS record
  (idempotent, safe for repeated runs)
- **Delete DNS Record** (`aws.route53.deleteRecord`) - deletes an
existing DNS record
  from a hosted zone

### Technical notes

- Route53 uses an XML-based API (unlike most AWS JSON APIs), so a custom
HTTP client
handles XML marshaling/unmarshaling and a local `parseError` for
Route53-specific
  XML error responses
- Route53 is a global service - the client uses `us-east-1` for signing
and the global
  `route53.amazonaws.com` endpoint
- Hosted zone IDs returned by AWS include a `/hostedzone/` prefix which
is normalized before use in API calls
- Reuses existing `common.CredentialsFromInstallation` for AWS OIDC
credential exchange

---------

Signed-off-by: yinebebt <yintar5@gmail.com>
Signed-off-by: Lucas Pinheiro <lucas@superplane.com>
Co-authored-by: Lucas Pinheiro <lucas@superplane.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:stage-3/3 Ready for full, in-depth, review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[AWS Route53] Expand integration

3 participants

Comments